写点什么

pymssql

发布于: 2 小时前

背景

在未接触 Python 之前,很多工具是用 C#写的,因此 DB 也就顺理成章的选择了 SQLServer。现在新加入了很多 Python 写的脚本,需要用到之前创建的数据。因此出现了这次应用的分享内容。

需要的库文件的安装

pip install pymssql
复制代码


需要注意是,如果你安装的最新版本,它有可能已经不支持 Python 3.3 了。

一个简单的示例

from os import getenvimport pymssql
server = getenv("PYMSSQL_TEST_SERVER")user = getenv("PYMSSQL_TEST_USERNAME")password = getenv("PYMSSQL_TEST_PASSWORD")
conn = pymssql.connect(server, user, password, "tempdb")cursor = conn.cursor()cursor.execute("""IF OBJECT_ID('persons', 'U') IS NOT NULL DROP TABLE personsCREATE TABLE persons ( id INT NOT NULL, name VARCHAR(100), salesrep VARCHAR(100), PRIMARY KEY(id))""")cursor.executemany( "INSERT INTO persons VALUES (%d, %s, %s)", [(1, 'John Smith', 'John Doe'), (2, 'Jane Doe', 'Joe Dog'), (3, 'Mike T.', 'Sarah H.')])# you must call commit() to persist your data if you don't set autocommit to Trueconn.commit()
cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')row = cursor.fetchone()while row: print("ID=%d, Name=%s" % (row[0], row[1])) row = cursor.fetchone()
conn.close()
复制代码

这个示例来源于官方文档。


server = getenv("PYMSSQL_TEST_SERVER") user = getenv("PYMSSQL_TEST_USERNAME") password = getenv("PYMSSQL_TEST_PASSWORD")

上面的这三行根据自己的内容进行修改

比如:

server=127.0.0.1

user=sa

password=password1

conn = pymssql.connect(server, user, password, "tempdb")
复制代码

这里的"tempdb"修改为自己需要的。

我在这一步出现了一点点问题,由于之前的项目有的表的名称使用的是日文,在运行代码时报了如下错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

解决方案:

  1. 在创建数据库连接是不指定表名

  2. 后面进行 CRUD 的时候使用“use 表名”的形式进行操作。

cursor.execute('use 我的表;')cursor.execute('SELECT * FROM 我的表')
复制代码


最后

其他的操作,大家感兴趣的话可以自行查找,如果有任何问题欢迎在评论区留言。

用户头像

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
pymssql